Memory cache systems are commonly used by the processors of a computer to reduce memory access time, and thus enhance a computer's speed and performance. In general, a memory cache is a smaller, faster memory that stores temporary copies of data from main memory which is likely to be used soon by a processor. When a processor needs to read or write data from a location in main memory, it first checks whether a copy of that data is in the cache. If the data is in the cache (a cache hit), it may be read from or written to much faster than reading from or writing to main memory.
Meanwhile, as integrated circuit technology has advanced, more circuitry can be implemented on a single integrated circuit die, thus allowing for more functionality on integrated circuits. For example, integrated circuits comprising processors having multiple cores are now the norm. Many processors also use multi-level cache, with smaller, faster caches (level 1 (L1) cache) backed up by larger, slower, “higher level” caches (e.g., level 2 (L2) cache, level 3 (L3) cache, etc.). Commonly, for processors having multiple cores, separate cores have individual L1 caches, and share higher level caches.
FIG. 1 schematically shows such a cache hierarchy, in which there is a plurality of cores and each core has a private L1 cache that is locally private to the core. L2 cache is globally shared among the plurality of cores. Both L1 cache and L2 cache are on chip.